package be.vdab.aspects;

import java.util.Collections;
import java.util.Map;
import java.util.TreeMap;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;

@Aspect
class StatistiekImpl implements Statistiek {
	private Map<String, Integer> statistiek = new TreeMap<>();
	@After("execution(* be.vdab.services.*.*(..))")
	public void pasStistiekenAan(JoinPoint joinPoint){
		String sleutel = joinPoint.getTarget().getClass().getName() + 
				'.' + joinPoint.getSignature().getName();
		Integer aantalOproepen = statistiek.get(sleutel);
		if(aantalOproepen == null){
			statistiek.put(sleutel, 1);
		} else {
			statistiek.put(sleutel, aantalOproepen + 1);
		}
	}
	@Override
	public Map<String, Integer> getStatistiek(){
		return Collections.unmodifiableMap(statistiek);
	}
}
